/**
 * Copyright @ 2013 - 2015 Suntec Software(Shanghai) Co., Ltd.
 * All Rights Reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are NOT permitted except as agreed by
 * Suntec Software(Shanghai) Co., Ltd.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 */

/**
 * @file QmlPlugin.h
 * @brief Declaration file of class QmlPlugin.
 *
 * This file includes the declaration of class QmlPlugin, and
 * the definitions of the macros.
 *
 * @attention used for C++ only.
 */

#ifndef QMLPLUGIN_H
#define QMLPLUGIN_H

#ifndef __cplusplus
#    error ERROR: This file requires C++ compilation (use a .cpp suffix)
#endif

#include "ngframeworkbase/NGFrameworkBase.h"
#include <QObject>

/**
 * @brief class QmlPlugin.
 *
 * This class is to register some infomation at QML moc system.
 *
 * @see register some infomation at QML moc system at QmlPlugin::registerTypes()
 */
class QmlPlugin : public QObject
{
    Q_OBJECT

public:
    /// constructor.
    explicit QmlPlugin(AppId appId, QObject *parent = 0);

    /// destructor.
    ~QmlPlugin();

    /// register some infomation at QML moc system.
    void registerTypes();

private:
    /// private member.
    AppId m_appId;
};

#endif /* QMLPLUGIN_H */
/* EOF */
